package com.atguigu.gmall.order.service;

import com.atguigu.gmall.model.enums.PaymentStatus;
import com.atguigu.gmall.model.order.OrderInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface OrderService {

    /**
     * 添加订单数据
     * @param orderInfo
     * @return
     */
    Long saveOrderInfo(OrderInfo orderInfo);

    /**
     * 生成流水号
     * @param userId
     * @return
     */
    String getTradeNo(String userId);

    /**
     * 比较流水号
     * @param userId
     * @param tradeCodeNo
     * @return
     */
    boolean checkTradeCode(String userId, String tradeCodeNo);

    /**
     * 删除流水号
     * @param userId
     */
    void deleteTradeNo(String userId);


    /**
     * 和库存系统进行比较，查看库存是否充足
     * @param skuId
     * @param skuNum
     * @return
     */
    boolean checkStock(Long skuId, Integer skuNum);

    /**
     * 分页查询我的订单数据
     * @param orderInfoPage
     * @param userId
     * @return
     */
    IPage<OrderInfo> getPage(Page<OrderInfo> orderInfoPage, String userId);

    /**
     * 取消订单接口
     * @param orderId
     */
    void execExpiredOrder(String orderId);

    // 根据orderid查询订单数据
    OrderInfo getByIdOrderInfo(String orderId);

    /**
     * 修改订单状态
     * @param orderId
     * @param paid
     */
    void updOrder(String orderId, String paid);
}
